//////////////////////////////////////////////////////////////////////////

#ifndef _CONNECTIONIMPL_H_
#include "connectionimpl.h"
#endif

//////////////////////////////////////////////////////////////////////////

#ifndef _SERVERCONNECTIONIMPL_H_
#include "serverconnectionimpl.h"
#endif

#ifndef _CLIENTCONNECTIONIMPL_H_
#include "clientconnectionimpl.h"
#endif

//////////////////////////////////////////////////////////////////////////

// UDP recv buffer
char ConnectionImpl::m_RecvBufferUDP[MAX_BUFFER_SIZE];
NetworkPacket ConnectionImpl::m_RecvPacketUDP;
const size_t ConnectionImpl::m_Port = 27027;
const char* ConnectionImpl::m_PortStr = "27027";

//////////////////////////////////////////////////////////////////////////

ConnectionImpl::ConnectionImpl()
{
}


//////////////////////////////////////////////////////////////////////////


ConnectionImpl::~ConnectionImpl()
{
}


//////////////////////////////////////////////////////////////////////////


ConnectionImpl* ConnectionImpl::GetServerConnectionImpl()
{
    return new ServerConnectionImpl();
}


//////////////////////////////////////////////////////////////////////////


ConnectionImpl* ConnectionImpl::GetClientConnectionImpl()
{
    return new ClientConnectionImpl();
}


//////////////////////////////////////////////////////////////////////////


const NetworkPacket& ConnectionImpl::GetRecvDataTCP() const
{
    return m_RecvPacketTCP;
}


//////////////////////////////////////////////////////////////////////////


const NetworkPacket& ConnectionImpl::GetRecvDataUDP() const
{
    return m_RecvPacketUDP;
}


//////////////////////////////////////////////////////////////////////////


void ConnectionImpl::HandleAccept()
{
    NotifyObservers(Observer::NETWORK_ACCEPTED_NEW_CONNECTION);
}


//////////////////////////////////////////////////////////////////////////


void ConnectionImpl::HandleSendTCP()
{
    NotifyObservers(Observer::NETWORK_SEND_COMPLETE_TCP);
}


//////////////////////////////////////////////////////////////////////////


void ConnectionImpl::HandleSendUDP()
{
    NotifyObservers(Observer::NETWORK_SEND_COMPLETE_UDP);
}


//////////////////////////////////////////////////////////////////////////


void ConnectionImpl::HandleRecvTCP()
{
    NotifyObservers(Observer::NETWORK_RECEIVE_COMPLETE_TCP);
}


//////////////////////////////////////////////////////////////////////////


void ConnectionImpl::HandleRecvUDP()
{
    NotifyObservers(Observer::NETWORK_RECEIVE_COMPLETE_UDP);
}


//////////////////////////////////////////////////////////////////////////


void ConnectionImpl::HandleDisconnect()
{
    NotifyObservers(Observer::NETWORK_DISCONNECT);
}


//////////////////////////////////////////////////////////////////////////
